package com.pray.praymall.cart.service;

import com.pray.praymall.cart.vo.CartItemVo;
import com.pray.praymall.cart.vo.CartVo;

import java.util.List;
import java.util.concurrent.ExecutionException;

/**
 * do something
 *
 * @author 魂悸魄
 * @date 2020/9/23 22:02
 */
public interface CartService {
    /**
     * 将商品添加到购物车
     *
     * @param skuId 商品id
     * @param num   数量
     * @throws ExecutionException   。。。
     * @throws InterruptedException 。。。
     */
    void addToCart(Long skuId, Integer num) throws ExecutionException, InterruptedException;

    /**
     * 获取购物车中某个购物项
     *
     * @param skuId skuId
     * @return 购物车中某个购物项
     */
    CartItemVo getCartItem(Long skuId);

    /**
     * 获取购物车
     *
     * @return 购物车
     */
    CartVo getCart() throws ExecutionException, InterruptedException;

    /**
     * 清空购物车
     *
     * @param key 购物车的key
     */
    void clearCart(String key);

    /**
     * 选中给定的购物项
     * @param skuId 商品id
     * @param check 选中状态，1：选中，0：不选中
     */
    void checkItem(Long skuId, Integer check);

    /**
     * 改变指定商品的数量
     * @param skuId 商品id
     * @param num 数量
     */
    void changeItemCount(Long skuId, Integer num);

    /**
     * 删除指定的购物项
     * @param skuId 商品id
     */
    void deleteItem(Long skuId);

    /**
     * 获取购物项
     * @return 购物项
     */
    List<CartItemVo> getUserCartItems();
}
